home *** CD-ROM | disk | FTP | other *** search
- {HISTORY of BTP - the Btrieve Unit for Turbo Pascal 6.0 V1.5, 11/9/91 }
- (* ----------------------------------------------------------------------- *)
- Version 1.0 4/9/91: Initial functioning unit, released 9/5/91.
-
- Version 1.1 9/8/91: Corrected a problem occuring in Btrieve files that had
- segmented keys with more than one segment. The stats
- stored by the BFile.Init constructor were not calculating the number of
- segments properly. The CreateFile function was also modified to deal with
- the same key problem. This change forces one more statement to be placed
- in any 'create file' routine. Any of the 24 key arrays not used in a file
- must have their key flags set to zero. See Create.PAS for an example.
-
- Version 1.2 9/16/91: NOT RELEASED PUBLICLY.
- Derived a new base object, BRecMgr, from what HAD been
- my base object, BFile. It made sense to me to provide access directly
- thru an object to the basic, non-file, non-record oriented Btrieve
- operations: Begin/End/Abort Transaction, Version, Stop and Reset. This
- BLOWS compatibility with any code you wrote under prior versions of this
- unit as the BT function is now virtual. You should NOT call the ancestor
- BT function in your override...replace it completely as shown in the
- example programs and in BTP.DOC.
-
- BRecMgr has a variant record field to hold info on the version of Btrieve
- the user is running. That data is set by BRecMgr.Init.
-
- Version 1.3 10/11/91: Unit name changed to BTP. Bug fixed that would give
- incorrect result in BFile.NumRecs if number of records
- exceeded 32,767. Made a number of "touch-up" changes to make it easier to
- use dynamic variables of the various data types in BTP. Note particularly
- that the CreateFile function now requires a second parameter, a pointer to
- a Btrieve file spec as defined in BTP.
-
- The constructors for BRecMgr and BFile now set up a string data field,
- VersionString, equal to the version number of Btrieve running in the user's
- computer. This is in addition to establishing the record field Version,
- which contains the exact bytes returned by the Btrieve version call.
-
- All example programs were modified to reflect the changes in 1.2 and 1.3.
-
- Version 1.4 10/27/91: Nomenclature of data types improved and made more
- consistent, both within BTP and with TP6's own internal
- Turbo Vision style. TRecMgr and BFile are now separate "base" objects.
- Added BFixed and BFileExt objects, both descendants of BFile. Together
- these permit handling any standard fixed-length file, and provide complete
- support for the get/step extended calls, including handling of all the
- drudgery of constructing data buffers. This was no small task! For
- extended calls, you need simply insert your filter and extractor specs into
- the provided collections in BFileExt. The rest of the setup is transparent
- to you, being handled by the object's internal methods and your standard
- override of the BTExt function.
-
- An object of type BFileExt can freely entertain both standard BT and
- extended BTExt calls thanks to encapsulation of the position block in the
- object (see EXAMPLE2.PAS). However, I recommend use of BFileExt only if
- you are truly going to use extended calls for a particular file. This is
- because there is about 32K more overhead per BFileExt object than BFile.
- The size of a BFile object is 698 bytes. The size of a BFileExt object is
- 722 bytes, plus the size of the extended data buffer, which I default to
- 32767 bytes, plus the size of any items inserted into the two collections.
- Note that the size of a BFixed object is 5043 bytes, to hold room for a
- buffer equal to the maximum size of a fixed length record, and the maximum
- length of a key.
-
- BFile and its descendants now take an Open mode parameter.
-
- The BFile.BT virtual function is now Abstract, to assure you don't call
- it without overriding it.
-
- The BFileExt.BTExt method must be overridden, with the override calling
- the ancestor; i.e. your override must be of a standard form, and must call
- BFileExt.BTExt. This is because BFileExt.BTExt is what sets the buffer
- length and constructs the buffer for extended read calls. This is in
- contrast to BFile.BT or BFileExt.BT, which must be overridden by REPLACING
- them, as shown in the example programs and in BTP.DOC.
-
- BFileExt's data fields include two collections. The FilterSpec collection
- need not hold any objects, but the ExtractorSpec must always hold at least
- one. Now, for extended calls, you handle these data fields as follows
- (see EXAMPLE2.PAS):
- 1: HEADER is handled internally. Don't mess with it.
- 2: FILTER's fields are assigned by your program.
- 3: FILTERSPEC collection may or may not hold any objects, depending on
- your program's needs.
- 4: EXTRACTOR must be initialized.
- 5: EXTRACTORSPEC collection must hold at least one object.
- 6: EXTDBUFFER is handled internally. Don't mess with it, except to
- use it as shown in EXAMPLE2.PAS when you override BFileExt.BTExt.
-
-
- BTP 1.4 IS THE FIRST *SHAREWARE* RELEASE. The BTP product is no longer
- FreeWare.
-
- Version 1.5 11/9/91: New in this release...complete support for alternate
- collating sequences. This required modifying the BFile
- object and its constructor, and the CreateFile function, and the addition of
- data structures for an alternate collating sequence file. A boolean field in
- BFile, HasAltCol, has been established. The CreateFile function now takes a
- third parameter, being the name of an alternate collating sequence file, if
- any.
- Also changed in this version:
- BFile has an additional field for a file's actual filespec length. This
- can be useful when cloning a file. A new function, CloneFile, has been
- added, which reduces the cloning process to a single function call, with only
- the names of the existing and new files passed as parameters. Miscellaneous
- changes in V1.5 include elimination of a redundant parameter previously
- required by the FilterSpec object's constructors. Added a variant to both
- the FileSpec and KeySpec objects to allow easier reporting of certain stats
- after a stat call.
- Some minor optimizations done here and there thruout the unit and example
- programs.
- BEST NEWS! The STATS program has been greatly enhanced. It now produces
- substantially the same output as 'BUTIL -STAT', but is a standalone program
- and can be freely distributed with your applications (unlike BUTIL) IF YOU ARE
- A REGISTERED USER of BTP.